<?php
/**
 * Affichage du formulaire permmetant d'ajouter un departement, voir departement.html
 * @global type $babBody 
 */

function displayAddDepartementForm() 
{
    
    global $babBody;

    class displayAddDepartementFormClass {

        function displayAddDepartementFormClass() 
        {

            /* LABELS */
            $this->departementLabel = bab_translate("Departement Name", $GLOBALS['babAddonFolder']);
            $this->directorLabel = bab_translate("Director", $GLOBALS['babAddonFolder']);

            /* BUTTON */
            $this->addDepartementButton = bab_translate("Add Departement", $GLOBALS['babAddonFolder']);
            
            /* NEXTSTAFF */
            $this->listStaff = bab_getGroupsMembers(unsDepartement_getGroupIDByName('uns_Personnel'));
            $this->listLength = count($this->listStaff);
        }

        function nextStaff() 
        {
            
            static $k = 0;

            if ($k < $this->listLength) {
                $this->staff = $this->listStaff[$k];
                $k++;
                return true;
            } else {
                return false;
            }
        }

    }

    $obj = new displayAddDepartementFormClass();
    $babBody->babecho(bab_printTemplate($obj, $GLOBALS['babAddonHtmlPath'] . "departement.html", "addForm"));
}

/**
 * Affichage du formulaire permettant la modification d'un departement, voir departement.html
 * @global type $babBody 
 */
function displayEditDepartementForm() 
{
    global $babBody;

    class displayEditDepartementFormClass {

        function displayEditDepartementFormClass() 
        {
            /* INFORMATIONS */
            $this->departement = unsDepartement_getDepartment(bab_rp('idDept'));
            //$this->director = bab_getUserName($this->departement['directorID']);

            /* LABELS */
            $this->departementLabel = bab_translate("Departement Name", $GLOBALS['babAddonFolder']);
            $this->directorLabel = bab_translate("Director", $GLOBALS['babAddonFolder']);

            /* BUTTON */
            $this->editDepartementButton = bab_translate("Edit Departement", $GLOBALS['babAddonFolder']);
            
            /* NEXTSTAFF */
            $this->listStaff = bab_getGroupsMembers(unsDepartement_getGroupIDByName('uns_Personnel'));
            $this->listLength = count($this->listStaff);
                        
        }

        function nextStaff() 
        {
            
            static $k = 0;

            if ($k < $this->listLength) {
                $this->staff = $this->listStaff[$k];
                $k++;
                return true;
            } else {
                return false;
            }
        }

    }

    $obj = new displayEditDepartementFormClass();
    $babBody->babecho(bab_printTemplate($obj, $GLOBALS['babAddonHtmlPath'] . "departement.html", "editForm"));
}

/**
 * Affichage de la liste des departements, voir departement.html
 * @global type $babBody 
 */
function displayListDepartement() {
    global $babBody;

    class displayListDepartementClass {

        function displayListDepartementClass() 
        {
            
            /* LABELS */
            $this->departementLabel = bab_translate("Departement", $GLOBALS['babAddonFolder']);
            $this->directorLabel = bab_translate("Directeur", $GLOBALS['babAddonFolder']);
            
            /* NEXTROW */
            $this->listDepartement = unsDepartement_getAllDepartments();
            $this->listDepartementLength = count($this->listDepartement);

            /*INFORMATIONS*/
            $this->bred = true;
        }

        function nextrow() {


            static $k = 0;
            $this->bred = !$this->bred;
            if ($k < $this->listDepartementLength) {
                $this->departement = $this->listDepartement[$k];
                $this->director = bab_getUserName($this->departement['directorID']);
                $k++;
                return true;
            } else {
                return false;
            }
        }

    }

    $obj = new displayListDepartementClass();
    $babBody->babecho(bab_printTemplate($obj, $GLOBALS['babAddonHtmlPath'] . "departement.html", "departementlist"));
}

/**
 * Fonction permettant d'ajouter un departement, voir functions/departement.php
 * @global type $babBody 
 */
function addDepartement() {

    global $babBody;

    if (!empty($_POST['departementName']) && !empty($_POST['directorID'])) {
        unsDepartement_addDepartment($_POST['departementName'], $_POST['directorID']);
    } else {
        $babBody->addError(bab_translate("All fields are required!", $GLOBALS['babAddonFolder']));
    }
}

/**
 * Fonction permettant de modifier un departement, voir functions/departement.php
 * @global type $babBody 
 */
function editDepartement() {

    global $babBody;

    if (!empty($_POST['departementName']) && !empty($_POST['directorID'])) {
        $idDept = bab_rp('idDept');
        unsDepartement_editDepartment($idDept, $_POST['departementName'], $_POST['directorID']);
    } else {
        $babBody->addError(bab_translate("All fields are required!", $GLOBALS['babAddonFolder']));
    }
}

/**
 * Fonction permettant de supprimer un departement, voir functions/departement.php
 */
function deleteDepartement() {
    unsDepartement_deleteDepartement(bab_rp('idDept'));
    displayListDepartement();
}

/**
 * Fonctions appelées lors de la validation des formulaires d'ajout et de modification
 */
if (isset($_POST['addDepartementSubmit'])) {//S'il y a l'ajout d'un département, on execute la fonction d'ajout
    addDepartement();
} else if (isset($_POST['editDepartementSubmit'])) {//S'il y a la modification d'un département, on execute la fonction de modification
    editDepartement();
}

/**
 * Affichage des onglets en fonction des droits de l'utilisateur
 */
global $babBody;
$babBody->addItemMenu("listDepartement", bab_translate("Departement List", $GLOBALS['babAddonFolder']), $GLOBALS['babAddonUrl'] . "user&idx=departement&do=listDepartement");
if (bab_isAccessValid('unsDepartement_rights_groups', 1000)) {
    // Après avoir octroyé les droits pour la gestion des départements, nous avons utilisé la méthode bab_isAccessValid($table, $ID) afin de vérifier les droits d'accès de l'utilisateur courant. 
    //On peut voir que l’ID de l’objet (1000) correspond bien à celui défini pour la classe macl.
    $babBody->addItemMenu("addDepartement", bab_translate("Add Departement", $GLOBALS['babAddonFolder']), $GLOBALS['babAddonUrl'] . "user&idx=departement&do=addDepartement");
}

/**
 * Par defaut on liste les départements
 */
$do = bab_rp('do', 'listDepartement');

/* Choix de l'affichage */
switch ($do) {
    case "addDepartement": //Ajout d'un département, on éxécute la fonction d'affichage du formulaire d'ajout
        if (bab_isAccessValid('unsDepartement_rights_groups', 1000)) {
        // Après avoir octroyé les droits pour la gestion des départements, nous avons utilisé la méthode bab_isAccessValid($table, $ID) afin de vérifier les droits d'accès de l'utilisateur courant. 
        //On peut voir que l’ID de l’objet (1000) correspond bien à celui défini pour la classe macl.
            $babBody->title = bab_translate("Add departement", $GLOBALS['babAddonFolder']);
            displayAddDepartementForm();
            break;
        }
    case "listDepartement": //Affichage des départements, on exécute la fonction d'affichage des départements
        $babBody->title = bab_translate("Departement List", $GLOBALS['babAddonFolder']);
        displayListDepartement();
        break;
    case "delete": //Suppression d'un département, on exécute la fonction de suppression
        $babBody->title = bab_translate("Departement List", $GLOBALS['babAddonFolder']);
        deleteDepartement();
        $do = "listDepartement";
        break;
    case"editDepartement": // Modification d'un département, on exécute la fonction d'affichage du formulaire de modification 
        $babBody->title = bab_translate("Edit Departement", $GLOBALS['babAddonFolder']);
        $babBody->addItemMenu("editDepartement", bab_translate("Edit Departement", $GLOBALS['babAddonFolder']), $GLOBALS['babAddonUrl'] . "user&idx=departement&do=editDepartement");
        displayEditDepartementForm();
        break;
}
/**
 * Affichage en gras de l'onglet actuel
 */
$babBody->setCurrentItemMenu($do);
?>
